#include<bits/stdc++.h>
using namespace std;

int n,m;
bool exist[11][2050];
int le,a;
vector<int> vec;

int main(){
	cin>>n>>m;
	memset(exist,true,sizeof(exist));
	for(int i=0;i<m;i++){
		cin>>le>>a;
		queue<int> que;
		que.push(a);
		while(le<=n){
			int size=que.size();
			for(int i=0;i<size;i++){
				a=que.front();
				que.pop();
				exist[le][a]=false;	
				que.push(2*a-1);
				que.push(2*a);
			}
			le++;
		}
	};
	if(!exist[1][1]){
		return 0;
	}
	//Button
	vector<int> vec1,vec2;
	int u=0;
	for(int i=1;i<=pow(2,n-1);i++){
		vec1.push_back(u);
		if(i%2) u+=4;
		else u+=2;
	}
	int wid=vec1[vec1.size()-1];
	//
	char graph[770][1800];
	memset(graph,' ',sizeof(graph));
	int k=0;
	int k1,k2=0;
	int height=0;
	for(int i=n;i>0;i--){
		k=k2;
		for(int j=0;j<pow(2,i-1);j+=2){
			if(i==1){
				height=k;
				graph[k][vec1[0]]='o';
				break;
			}
			int j1=j+1;
			int xl=vec1[j],xr=vec1[j+1];
			int mid=(xl+xr)/2;
			vec2.push_back(mid);
			int k1=k;
			//l
			if(exist[i][j1]) {
				graph[k1][xl]='o';				
			}
			k=k1+1;
			for(int v=xl+1;v<mid;v++,k++){
				if(exist[i][j1]) {
					graph[k][v]='/';					
				}
			}
			k2=k;
			//r
			k=k1+1;
			if(exist[i][j1+1]) {
				graph[k1][xr]='o';
				for(int v=xr-1;v>mid;v--,k++){
					graph[k][v]='\\';
				}
			}
			k=k1;
		}
		vec1=vec2;
		vec2.clear();
	};
	//Output
	for(int i=k;i>=0;i--){
		for(int j=0;j<=wid;j++){
			cout<<graph[i][j];
		}
		cout<<endl;
	}
	return 0;
}
